﻿// 3658. 奇怪的餐厅.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <algorithm>


using namespace std;
/*
https://www.acwing.com/problem/content/3661/

鲁大师和他的朋友经常去一家奇怪的餐厅，为什么说奇怪呢，一是餐厅提供的菜品比较奇怪，二是餐厅的付费规则比较奇怪。

每个人有不同的折扣上限（在结账时能够打折的最高金额），对于分摊到某个人的应付金额，折扣上限以内的部分可以打折付费，
超过折扣上限的部分需要原价付费。

通过合理的分摊菜品总费用，可以尽可能的让所有人的花费之和最少。

这次鲁大师和魏然层风以及朋友一共 N个人去这家餐厅吃饭，他们点的菜品总金额为 T
，现在告诉你每个人的折扣率 z和折扣上限 H，请告诉他们最少需要支付多少钱？

输入格式
输入包含多组测试数据。

每组数据第一行包含整数 N 和 T。

接下来 N行，每行包含两个数字 z和 H。

输出格式
每组数据输出一行结果。

数据范围
1≤N≤100
,
1≤T,H≤109
,
0<z<1
，
为了方便计算，保证 T,H都是 10 的倍数，z保留一位小数。

输入样例:
2 100
0.7 70
0.6 50
3 500
0.6 100
0.8 200
0.7 100
1 100
0.6 100
输出样例：
65
390
60
*/
const int N = 10000;

struct PERSON {
    double z;
    int limit;
}persons[N];

int n, t;

bool cmp(const struct PERSON& a, const struct PERSON& b) {
    return a.z < b.z;
}

void solve() {
    int ans = 0;
    for (int i = 0; i < n; i++) {
        if (t >= persons[i].limit) {
            t -= persons[i].limit;
            ans += persons[i].limit * persons[i].z;
        }
        else if (t < persons[i].limit) {
            ans += persons[i].z * t;
            t = 0;
        }
    }

    if (t != 0) {
        ans += t;
    }
    cout << ans << endl;

}

int main() {
    while (cin >> n >> t) {
        for (int i = 0; i < n; i++) {
            cin >> persons[i].z >> persons[i].limit;
        }

        sort(persons, persons + n, cmp);

        solve();
    }



    return 0;
}